package org.corespring.restaurant.dao.hibernate;
import java.util.List;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Repository;
import org.corespring.restaurant.dao.UsuarioDao;
import org.corespring.restaurant.model.Usuario;

//@Component
@Repository
public class UsuarioDaoHibernate extends HibernateDaoSupport implements
		UsuarioDao {

    @Autowired
    public UsuarioDaoHibernate(SessionFactory sessionFactory) {
		setSessionFactory(sessionFactory);
    }

    @Override
    public Usuario obtenerUsuarioById(String idUsuario) {
        Usuario usuario = getHibernateTemplate().get(Usuario.class, idUsuario);
        return usuario;
    }

    @Override
    public void guardarUsuario(Usuario usuario) {
        getHibernateTemplate().saveOrUpdate(usuario);
        getHibernateTemplate().flush();
    }

    @Override
    public List<Usuario> obtenerListaUsuarios() {
        List list = getHibernateTemplate().find(" from Usuario ");
        return list;
    }

    @Override
    public void eliminarUsuario(String idUsuario) {
        Usuario usuario = obtenerUsuarioById(idUsuario);
        getHibernateTemplate().delete(usuario);
    }

    @Override
    public List<Usuario> obtenerListaUsuariosPorPerfil(String idPerfil) {
        StringBuffer query = new StringBuffer("from Usuario p where 1 = 1 ");
        query.append(" and upper(p.perfil.idperfil) like '").append(idPerfil).append("'");
	List list = getHibernateTemplate().find(query.toString());
	return list;
    }
    
}
